import com.itheima.Cat;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.stream.Collectors;

public class Task {
    public static void main(String[] args) throws Exception {
        testGetConstructorWithParams();
    }

    public static void testGetConstructorWithParams() throws Exception{
        // 1、反射第一步：必须先得到这个类的Class对象
        Class<Cat> c = Cat.class;
        // 2、获取类的某个构造器：无参数构造器
        Constructor<Cat> constructor1 = c.getDeclaredConstructor();
        System.out.printf("构造%s->参数个数：%d%n", constructor1.getName(), constructor1.getParameterCount());

        // 通过无参数构造器创建对象
        /* TODO 1 */

        // 3、获取有参数构造器 (String.class, int.class)
        Constructor<?> constructor2 = c.getDeclaredConstructor(String.class, int.class);
        System.out.printf("构造%s->参数个数：%d%n", constructor2.getName(), constructor2.getParameterCount());

        // 通过有参数的私有构造器创建对象（设置私有构造器可访问，然后创建对象）
        /* TODO 2 */
    }
}